859
1312
Ich habe einen Datensatz wie unten angegeben
Name col1 col2
a 10.3 10.9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
Ich möchte col1 und col2 meines df vergleichen und ich möchte eine weitere Spalte erstellen, in der ich beim Vergleichen von col1- und col2-Werten, wenn der Wert von col2 von col1 steigt, in meine Spalte dort einen Anstieg neben ihnen eingeben möchte und wenn sie es sind abnehmend dann möchte ich abnehmend schreiben und keine Änderungen, wenn sie gleich sind
und ich möchte meine Ausgabe so
Name col1 col2 col3
a 10,3 10,9 steigt
b 11 15 ansteigend
c 20 7.2 abnehmend
d 6.2 6.2 keine Änderung
e 5.3 5.4 steigt
f 4.5 4.0 abnehmend 
Mit dplyr:
df%>%
mutieren (Col3 = ifelse (col2 == col1,
"Keine Änderung",
ifelse (col2> col1,
"ansteigen", "abnehmen")))
Oder verwenden Sie case_when, wie von @akrun vorgeschlagen:
df%>%
mutieren (Col3 = case_when (col1 == col2 ~ "keine Änderung",
col2> col1 ~ "Zunehmend",
TRUE ~ "abnehmend"))
Ergebnis:
Name col1 col2 Col3
1 a 10,3 10,9 ansteigend
2 b 11,0 15,0 erhöht
3 c 20,0 7,2 abnehmend
4 d 6.2 6.2 keine Änderung
5 e 5.3 5.4 ansteigend
6 f 4,5 4,0 abnehmend
Daten:
df <-Struktur (Liste (Name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Wir können col1 von col2 subtrahieren und dann mit dem Vorzeichen Werte zuweisen
df $ col3 <- c ("abnehmend", "keine Änderung", "zunehmend") [Vorzeichen (df $ col1 - df $ col2) + 2]
df
# name col1 col2 col3
# 1 a 10,3 10,9 abnehmend
# 2 b 11.0 15.0 abnehmend
# 3 c 20.0 7.2 steigt
# 4 d 6.2 6.2 keine Änderung
# 5 e 5.3 5.4 abnehmend
# 6 f 4.5 4.0 steigt
Oder mit dplyr können wir case_when verwenden
Bibliothek (dplyr)
df%>%
mutieren (col3 = case_when (col1 == col2 ~ "keine Änderung",
col1> col2 ~ "ansteigend",
TRUE ~ "abnehmend"))
|
Basis R.
df $ col3 <-with (df, ifelse (col1> col2, "abnehmend",
ifelse (col1